Here, we will cluster the tumoral cells for case 413.
library(Seurat)
library(Signac)
library(SLOcatoR)
library(EnsDb.Hsapiens.v86)
library(ggpubr)
library(tidyverse)
library(pals)
library(openxlsx)
library(here)
#library(presto)
library(DT)
set.seed(173)
path_to_obj <- here("MCL/results/R_objects/6.seurat_tumoral_413.rds")
path_to_save_xlsx<- here("MCL/3-clustering/tmp/7.seurat_tumoral_413_clustered_markers.xlsx")
path_to_save_obj <- here("MCL/results/R_objects/7.seurat_tumoral_413_clustered.rds")
path_to_save_shiny_metadata <- here("MCL/results/R_objects/7.seurat_tumoral_413_clustered_shiny_metadata.rds")
path_to_save_shiny_expression <- here("MCL/results/R_objects/7.seurat_tumoral_413_clustered_shiny_expression.rds")
# Colors
color_palette <- c("#E6194B", "#3CB44B", "#FFD8B1", "#4363D8", "#F58231",
"#911EB4", "#46F0F0", "#F032E6", "#BCF60C", "#FABEBE",
"#008080", "#E6BEFF", "#9A6324", "#FFFAC8", "#800000",
"#AAFFC3", "#808000", "#FFE119", "#000075", "#808080",
"#000000", "tan", "darkgrey")
# Source functions
source(here::here("scRNA-seq/bin/utils.R"))
# Thresholds
chrY_cutoff <- 0
seurat <- readRDS(path_to_obj)
# seurat[["ATAC"]] <- NULL
Let us score each cell for cell cycling singatures:
seurat <- CellCycleScoring(
seurat,
s.features = cc.genes$s.genes,
g2m.features = cc.genes$g2m.genes
)
FeaturePlot(seurat, c("G2M.Score", "S.Score")) &
scale_color_viridis_c(option = "magma")
Since we subsetted the CD79A+ cells, let us rerun the general pipeline for dimensionality reduction:
seurat <- seurat %>%
FindVariableFeatures() %>%
ScaleData() %>%
RunPCA() %>%
RunUMAP(dims = 1:20, reduction = "pca")
DimPlot(seurat, cols = color_palette, reduction = "umap")
Exploring our data, we have observed that the two main “blobs” might be two subclones, one chrY+ and the other chrY. Loss of chromosome Y is a known feature of MCL:
FeaturePlot(
seurat,
features = c("UTY", "KDM5D", "DDX3Y", "USP9Y", "ZFY", "EIF1AY"),
reduction = "umap"
) &
scale_color_viridis_c(option = "magma")
Let us convert the expression of all genes located in chrY in a single score:
# annotations <- GetGRangesFromEnsDb(ensdb = EnsDb.Hsapiens.v86)
# seqlevelsStyle(annotations) <- "UCSC"
# annotations_chrY <- annotations[annotations@seqnames == "chrY", "gene_name"]
# goi_chrY <- unique(annotations_chrY$gene_name)
goi_chrY <- c("UTY", "KDM5D", "DDX3Y", "USP9Y", "ZFY", "EIF1AY")
seurat <- AddModuleScore(seurat, features = list(goi_chrY), name = "chrY_score")
FeaturePlot(seurat, "chrY_score1", reduction = "umap")
(density_gg <- seurat@meta.data %>%
ggplot(aes(chrY_score1)) +
geom_density() +
geom_vline(xintercept = chrY_cutoff, linetype = "dashed", color = "darkblue") +
theme_classic())
seurat$has_loss_chrY <- ifelse(
seurat$chrY_score1 > chrY_cutoff,
"chrY+",
"chrY-"
)
DimPlot(seurat, group.by = "has_loss_chrY", reduction = "umap")
seurat <- FindNeighbors(seurat, dims = 1:20, reduction = "pca")
seurat <- FindClusters(seurat, resolution = 0.75)
## Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
##
## Number of nodes: 23913
## Number of edges: 746436
##
## Running Louvain algorithm...
## Maximum modularity in 10 random starts: 0.8514
## Number of communities: 16
## Elapsed time: 6 seconds
DimPlot(seurat, cols = color_palette, reduction = "umap")
FeaturePlot(seurat, c("CD8A", "CD3D"), reduction = "umap", order = TRUE)
Let us subcluster and eliminate residual T cells:
seurat <- FindSubCluster(
seurat,
cluster = "10",
graph.name = "RNA_snn",
subcluster.name = "T_cells",
resolution = 0.25
)
## Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
##
## Number of nodes: 927
## Number of edges: 23415
##
## Running Louvain algorithm...
## Maximum modularity in 10 random starts: 0.8519
## Number of communities: 3
## Elapsed time: 0 seconds
DimPlot(seurat, group.by = "T_cells", reduction = "umap", cols = color_palette)
Idents(seurat) <- "T_cells"
markers_t <- FindMarkers(seurat, ident.1 = "10_2", ident.2 = c("10_1", "10_0"))
head(markers_t, 40)
## p_val avg_log2FC pct.1 pct.2 p_val_adj
## MKI67 1.043457e-141 2.3751449 0.828 0.026 3.819157e-137
## RRM2 2.577983e-127 2.3148350 0.783 0.030 9.435677e-123
## TOP2A 2.274938e-121 2.6798194 0.778 0.044 8.326502e-117
## ASPM 4.174608e-119 2.5236685 0.700 0.017 1.527948e-114
## CENPF 8.410013e-103 2.3147495 0.719 0.054 3.078149e-98
## DIAPH3 1.806515e-100 1.8645610 0.734 0.062 6.612026e-96
## MELK 2.230226e-95 1.4371359 0.631 0.029 8.162852e-91
## NUSAP1 9.276000e-95 1.9268140 0.724 0.073 3.395109e-90
## KIF11 5.168878e-94 1.4385145 0.724 0.068 1.891861e-89
## TPX2 4.404597e-87 1.3922512 0.542 0.015 1.612126e-82
## HMGB2 3.590202e-86 2.3896849 0.754 0.115 1.314050e-81
## AURKB 7.597648e-85 1.1130806 0.498 0.006 2.780815e-80
## NCAPG 4.063483e-84 1.2856596 0.522 0.014 1.487275e-79
## KIF15 2.129373e-81 1.4322701 0.611 0.050 7.793717e-77
## SMC4 7.912151e-80 2.1650445 0.872 0.240 2.895926e-75
## CLSPN 1.095168e-77 1.2488586 0.532 0.026 4.008425e-73
## TUBA1B 3.747215e-77 2.6208109 0.793 0.191 1.371518e-72
## POLQ 1.686194e-76 1.4728983 0.670 0.086 6.171639e-72
## HIST1H3B 2.519404e-76 1.2356485 0.483 0.012 9.221271e-72
## KNL1 4.178171e-76 1.5832715 0.695 0.104 1.529252e-71
## CDK1 3.989078e-75 0.9523537 0.453 0.007 1.460043e-70
## ANLN 1.571796e-73 1.0300879 0.438 0.006 5.752930e-69
## GTSE1 1.169896e-72 1.1080160 0.458 0.012 4.281937e-68
## CENPE 3.151369e-72 1.9105031 0.601 0.066 1.153433e-67
## EZH2 1.316891e-71 1.8266824 0.897 0.297 4.819953e-67
## SPC25 3.994174e-71 1.0604885 0.473 0.018 1.461908e-66
## BUB1B 6.232504e-71 1.1112954 0.512 0.032 2.281159e-66
## KIF14 2.074754e-68 1.2854870 0.443 0.014 7.593808e-64
## NCAPG2 8.297068e-68 1.5298182 0.714 0.134 3.036810e-63
## KIF4A 2.147565e-67 1.0181069 0.443 0.015 7.860301e-63
## FANCI 5.138002e-67 1.3605587 0.680 0.112 1.880560e-62
## DLGAP5 1.639140e-66 1.2054163 0.429 0.012 5.999415e-62
## ITM2A 9.278172e-65 1.6953123 0.537 0.054 3.395904e-60
## NUF2 1.474047e-64 1.2075440 0.547 0.054 5.395158e-60
## NCAPH 1.689594e-64 0.8947618 0.419 0.012 6.184082e-60
## STMN1 1.777636e-64 1.9177668 0.773 0.211 6.506326e-60
## CD3D 2.884926e-64 1.5528943 0.665 0.117 1.055912e-59
## NDC80 3.335047e-64 1.1382212 0.527 0.048 1.220660e-59
## HIST1H1B 3.404230e-64 1.4034828 0.562 0.064 1.245982e-59
## NEIL3 7.962928e-64 1.0381171 0.404 0.010 2.914511e-59
markers_t2 <- FindMarkers(seurat, ident.1 = "10_2", ident.2 = "9")
head(markers_t2, 40)
## p_val avg_log2FC pct.1 pct.2 p_val_adj
## BCL11B 1.704262e-195 2.702679 0.862 0.036 6.237768e-191
## PAM 2.720978e-177 2.417499 0.788 0.031 9.959052e-173
## THEMIS 1.317103e-176 2.636036 0.764 0.025 4.820729e-172
## CD2 1.892559e-174 2.064308 0.739 0.020 6.926954e-170
## FYB1 2.957030e-174 2.437955 0.877 0.065 1.082303e-169
## INPP4B 1.672006e-171 2.394885 0.773 0.031 6.119710e-167
## PRKCH 3.131745e-170 2.941544 0.916 0.093 1.146250e-165
## TOX 9.339274e-167 3.725906 0.837 0.062 3.418268e-162
## ST8SIA1 1.058037e-166 2.175798 0.729 0.025 3.872520e-162
## CD96 1.080878e-153 1.887644 0.700 0.027 3.956121e-149
## CD247 4.029037e-152 1.916187 0.700 0.029 1.474668e-147
## HNRNPLL 2.846110e-151 1.876901 0.665 0.021 1.041705e-146
## SKAP1 8.193476e-143 2.485208 0.921 0.129 2.998894e-138
## GPRIN3 2.749292e-133 1.730662 0.621 0.024 1.006268e-128
## IL32 3.088190e-129 2.042565 0.631 0.031 1.130308e-124
## CD3D 4.844917e-127 1.764004 0.665 0.043 1.773288e-122
## LINC01934 2.692531e-123 3.111542 0.680 0.056 9.854932e-119
## LCP2 3.269600e-123 1.221559 0.616 0.031 1.196706e-118
## ICOS 6.805913e-123 1.376099 0.498 0.005 2.491032e-118
## ITK 3.921903e-121 1.456428 0.591 0.028 1.435456e-116
## CDK6 2.926085e-120 1.415366 0.537 0.015 1.070976e-115
## CD28 1.233079e-111 1.090352 0.478 0.010 4.513192e-107
## RASGRP1 2.577229e-111 1.647563 0.635 0.052 9.432915e-107
## GZMK 1.022253e-110 2.154594 0.557 0.029 3.741548e-106
## TNIK 8.054632e-109 1.590978 0.512 0.019 2.948076e-104
## TRAC 4.069832e-108 1.750100 0.626 0.052 1.489599e-103
## CD3E 1.940080e-107 1.138556 0.478 0.013 7.100888e-103
## PLCL1 1.838231e-104 1.602644 0.502 0.021 6.728110e-100
## TC2N 7.825033e-103 1.524254 0.591 0.047 2.864040e-98
## PRKCQ 2.502261e-101 1.204971 0.478 0.017 9.158526e-97
## MIR181A1HG 4.636533e-96 1.411961 0.419 0.009 1.697017e-91
## CD3G 2.197212e-95 1.023576 0.453 0.016 8.042014e-91
## MLLT3 2.737132e-95 1.586630 0.581 0.052 1.001818e-90
## DTHD1 3.640850e-95 1.320979 0.424 0.011 1.332587e-90
## CAMK4 8.144515e-95 1.351471 0.443 0.015 2.980974e-90
## NCALD 8.785354e-95 1.831177 0.458 0.019 3.215527e-90
## TRBC1 3.840501e-94 2.010028 0.473 0.023 1.405662e-89
## ITM2A 2.199969e-92 1.722423 0.537 0.042 8.052106e-88
## NIBAN1 2.482489e-92 1.597467 0.532 0.041 9.086157e-88
## AAK1 5.114678e-92 1.467465 0.640 0.079 1.872023e-87
seurat <- subset(seurat, T_cells != "10_2") # cluster 10_2 expresses T cell markers
DimPlot(seurat, reduction = "umap")
We will try to find “mirror” clusters in both subclones (chrY+/-):
seurat <- FindNeighbors(seurat, dims = 1:20, reduction = "pca")
seurat <- FindClusters(seurat, resolution = 0.1)
## Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
##
## Number of nodes: 23710
## Number of edges: 741258
##
## Running Louvain algorithm...
## Maximum modularity in 10 random starts: 0.9460
## Number of communities: 6
## Elapsed time: 5 seconds
DimPlot(seurat, reduction = "umap")
# chrY-
Idents(seurat) <- "seurat_clusters"
seurat <- FindSubCluster(
seurat,
cluster = "0",
graph.name = "RNA_snn",
subcluster.name = "chrYneg",
resolution = 0.15
)
## Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
##
## Number of nodes: 11214
## Number of edges: 332740
##
## Running Louvain algorithm...
## Maximum modularity in 10 random starts: 0.8833
## Number of communities: 3
## Elapsed time: 2 seconds
DimPlot(seurat, group.by = "chrYneg", reduction = "umap")
Idents(seurat) <- "chrYneg"
markers_0 <- FindAllMarkers(seurat, only.pos = TRUE, logfc.threshold = 0.8)
markers_0_0 <- FindMarkers(
seurat,
ident.1 = "0_0",
ident.2 = c("0_1", "0_2"),
only.pos = TRUE,
logfc.threshold = 0.5
)
markers_0_1 <- FindMarkers(
seurat,
ident.1 = "0_1",
ident.2 = c("0_0", "0_2"),
only.pos = TRUE,
logfc.threshold = 0.75
)
markers_0_2 <- FindMarkers(
seurat,
ident.1 = "0_2",
ident.2 = c("0_1", "0_0"),
only.pos = TRUE,
logfc.threshold = 0.75
)
DT::datatable(markers_0_0, options = list(scrollX = TRUE))
DT::datatable(markers_0_1, options = list(scrollX = TRUE))
DT::datatable(markers_0_2, options = list(scrollX = TRUE))
seurat_chrYneg <- subset(seurat, idents = c("0_0", "0_1", "0_2"))
goi_chrY_neg <- rev(c("RIPOR2", "MARCH1", "PCDH9", "CCND3", "CD38", "TRAF5",
"PRDM2", "RGS2", "CXCR4", "CD83", "EZR", "JUNB", "CD55", "BACH2", "BACH1", "CD69",
"MIR155HG", "IL21R", "NFKBID", "BATF", "IRF4", "NFATC1"))
DotPlot(
seurat_chrYneg,
features = goi_chrY_neg) +
coord_flip()
# chrY+
Idents(seurat) <- "seurat_clusters"
seurat <- FindSubCluster(
seurat,
cluster = "1",
graph.name = "RNA_snn",
subcluster.name = "chrYpos",
resolution = 0.15
)
## Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
##
## Number of nodes: 10187
## Number of edges: 326704
##
## Running Louvain algorithm...
## Maximum modularity in 10 random starts: 0.9019
## Number of communities: 5
## Elapsed time: 1 seconds
DimPlot(seurat, group.by = "chrYpos", reduction = "umap")
Idents(seurat) <- "chrYpos"
# markers_0 <- FindAllMarkers(seurat, only.pos = TRUE, logfc.threshold = 0.8)
markers_1_0 <- FindMarkers(
seurat,
ident.1 = "1_0",
ident.2 = c("1_1", "1_2", "1_3", "1_4"),
only.pos = TRUE,
logfc.threshold = 0.5
)
markers_1_1 <- FindMarkers(
seurat,
ident.1 = "1_1",
ident.2 = c("1_0", "1_2", "1_3", "1_4"),
only.pos = TRUE,
logfc.threshold = 0.5
)
markers_1_2 <- FindMarkers(
seurat,
ident.1 = "1_2",
ident.2 = c("1_0", "1_1", "1_3", "1_4"),
only.pos = TRUE,
logfc.threshold = 0.5
)
markers_1_3 <- FindMarkers(
seurat,
ident.1 = "1_3",
ident.2 = c("1_0", "1_1", "1_2", "1_4"),
only.pos = TRUE,
logfc.threshold = 0.5
)
markers_1_4 <- FindMarkers(
seurat,
ident.1 = "1_4",
ident.2 = c("1_0", "1_1", "1_2", "1_3"),
only.pos = TRUE,
logfc.threshold = 0.5
)
DT::datatable(markers_1_0, options = list(scrollX = TRUE))
DT::datatable(markers_1_1, options = list(scrollX = TRUE))
DT::datatable(markers_1_2, options = list(scrollX = TRUE))
DT::datatable(markers_1_3, options = list(scrollX = TRUE))
DT::datatable(markers_1_4, options = list(scrollX = TRUE))
seurat_chrYpos <- subset(seurat, idents = c("1_0", "1_1", "1_2", "1_3", "1_4"))
goi_chrY_pos <- rev(c("PRDM2", "RGS2", "CXCR4", "CD83", "EZR", "JUNB", "CD55", "FOS", "ZNF331",
"TSHZ2", "CCSER1", "MECOM", "AFF2", "MARCH1",
"MIR155HG", "IL21R", "NFKBID", "BATF", "IRF4", "NFATC1", "CCL22",
"MT-ND2", "MT-ND1"))
DotPlot(
seurat_chrYpos,
features = goi_chrY_pos) +
coord_flip()
Final clusters:
seurat$final_clusters <- seurat$chrYneg
seurat$final_clusters[seurat$final_clusters == "1"] <- str_subset(seurat$chrYpos, "^1_")
Idents(seurat) <- "final_clusters"
DimPlot(seurat, group.by = "final_clusters", reduction = "umap")
Summary clusters chrY-:
Summary clusters chrY+:
Let us subset poor-quality cells and doublets:
seurat <- seurat[, !(seurat$final_clusters %in% c("1_4", "3"))]
DimPlot(seurat, reduction = "umap")
seurat$annotation_20220523 <- case_when(
seurat$final_clusters == "0_0" ~ "chrY- PCDH9+MARCH1+",
seurat$final_clusters == "0_1" ~ "chrY- CD69+JUNB+CXCR4+",
seurat$final_clusters == "0_2" ~ "chrY- MIR155HG+NFKB1+MYC+",
seurat$final_clusters == "1_0" ~ "undefined",
seurat$final_clusters == "1_1" ~ "chrY+ CD69+JUNB+CXCR4+",
seurat$final_clusters == "1_2" ~ "chrY+ TSHZ2+MARCH1+",
seurat$final_clusters == "1_3" ~ "chrY+ MIR155HG+NFKB1+MYC+",
seurat$final_clusters == "2" ~ "cycling",
seurat$final_clusters == "4" ~ "non-tumoral B-cells",
seurat$final_clusters == "5" ~ "non-tumoral B-cells"
)
Idents(seurat) <- "annotation_20220523"
seurat <- FindNeighbors(seurat, dims = 1:20, reduction = "pca")
seurat <- FindSubCluster(
seurat,
cluster = "cycling",
graph.name = "RNA_snn",
resolution = 0.1,
subcluster.name = "cycling"
)
## Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
##
## Number of nodes: 876
## Number of edges: 26265
##
## Running Louvain algorithm...
## Maximum modularity in 10 random starts: 0.9445
## Number of communities: 2
## Elapsed time: 0 seconds
DimPlot(seurat, group.by = "cycling", reduction = "umap")
seurat$annotation_20220523[seurat$cycling == "cycling_0"] <- "Cycling tumoral"
seurat$annotation_20220523[seurat$cycling == "cycling_1"] <- "non-tumoral B-cells"
Idents(seurat) <- "annotation_20220523"
DimPlot(seurat, reduction = "umap")
#openxlsx::write.xlsx(list(markers = markers), file = path_to_save_xlsx)
saveRDS(seurat, path_to_save_obj)
Save input to shiny app:
#input_shiny <- seurat2shiny(
# seurat,
# assay = "RNA",
# slot = "data",
# reduction = "umap"
#)
#saveRDS(input_shiny$metadata, path_to_save_shiny_metadata)
#saveRDS(input_shiny$expression, path_to_save_shiny_expression)
sessionInfo()
## R version 4.2.0 (2022-04-22)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 20.04.2 LTS
##
## Matrix products: default
## BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.9.0
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.9.0
##
## locale:
## [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=es_ES.UTF-8 LC_COLLATE=en_US.UTF-8 LC_MONETARY=es_ES.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=es_ES.UTF-8 LC_NAME=C LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=es_ES.UTF-8 LC_IDENTIFICATION=C
##
## attached base packages:
## [1] stats4 stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] DT_0.22 here_1.0.1 openxlsx_4.2.5 pals_1.7 forcats_0.5.1 stringr_1.4.0 dplyr_1.0.8 purrr_0.3.4 readr_2.1.2 tidyr_1.2.0 tibble_3.1.6 tidyverse_1.3.1 ggpubr_0.4.0 ggplot2_3.3.5 EnsDb.Hsapiens.v86_2.99.0 ensembldb_2.19.10 AnnotationFilter_1.19.0 GenomicFeatures_1.47.14 AnnotationDbi_1.57.1 Biobase_2.55.2 GenomicRanges_1.47.6 GenomeInfoDb_1.31.10 IRanges_2.29.1 S4Vectors_0.33.17 BiocGenerics_0.41.2 SLOcatoR_0.0.0.9000 Signac_1.6.0 SeuratObject_4.0.4 Seurat_4.1.0 BiocStyle_2.23.1
##
## loaded via a namespace (and not attached):
## [1] rappdirs_0.3.3 SnowballC_0.7.0 rtracklayer_1.55.4 scattermore_0.8 ModelMetrics_1.2.2.2 bit64_4.0.5 knitr_1.38 irlba_2.3.5 DelayedArray_0.21.2 data.table_1.14.2 rpart_4.1.16 KEGGREST_1.35.0 hardhat_0.2.0 RCurl_1.98-1.6 generics_0.1.2 cowplot_1.1.1 RSQLite_2.2.12 RANN_2.6.1 future_1.25.0 tzdb_0.3.0 bit_4.0.4 spatstat.data_2.2-0 xml2_1.3.3 lubridate_1.8.0 httpuv_1.6.5 SummarizedExperiment_1.25.3 assertthat_0.2.1 gower_1.0.0 xfun_0.30 hms_1.1.1 jquerylib_0.1.4 evaluate_0.15 promises_1.2.0.1 fansi_1.0.3 restfulr_0.0.13 progress_1.2.2 readxl_1.4.0 dbplyr_2.1.1 igraph_1.3.1 DBI_1.1.2 htmlwidgets_1.5.4 sparsesvd_0.2
## [43] spatstat.geom_2.4-0 ellipsis_0.3.2 crosstalk_1.2.0 RSpectra_0.16-1 backports_1.4.1 bookdown_0.26 biomaRt_2.51.4 deldir_1.0-6 MatrixGenerics_1.7.0 vctrs_0.4.1 ROCR_1.0-11 abind_1.4-5 caret_6.0-92 cachem_1.0.6 withr_2.5.0 ggforce_0.3.3 sctransform_0.3.3 GenomicAlignments_1.31.2 prettyunits_1.1.1 goftest_1.2-3 cluster_2.1.3 lazyeval_0.2.2 crayon_1.5.1 labeling_0.4.2 recipes_0.2.0 pkgconfig_2.0.3 slam_0.1-50 tweenr_1.0.2 nlme_3.1-157 ProtGenerics_1.27.2 nnet_7.3-17 rlang_1.0.2 globals_0.14.0 lifecycle_1.0.1 miniUI_0.1.1.1 filelock_1.0.2 BiocFileCache_2.3.5 modelr_0.1.8 dichromat_2.0-0 rprojroot_2.0.3 cellranger_1.1.0 polyclip_1.10-0
## [85] matrixStats_0.62.0 lmtest_0.9-40 Matrix_1.4-1 ggseqlogo_0.1 carData_3.0-5 zoo_1.8-10 reprex_2.0.1 ggridges_0.5.3 png_0.1-7 viridisLite_0.4.0 rjson_0.2.21 bitops_1.0-7 KernSmooth_2.23-20 pROC_1.18.0 Biostrings_2.63.3 blob_1.2.3 parallelly_1.31.1 spatstat.random_2.2-0 rstatix_0.7.0 ggsignif_0.6.3 scales_1.2.0 memoise_2.0.1 magrittr_2.0.3 plyr_1.8.7 ica_1.0-2 zlibbioc_1.41.0 compiler_4.2.0 BiocIO_1.5.0 RColorBrewer_1.1-3 fitdistrplus_1.1-8 Rsamtools_2.11.0 cli_3.3.0 XVector_0.35.0 listenv_0.8.0 patchwork_1.1.1 pbapply_1.5-0 MASS_7.3-56 mgcv_1.8-40 tidyselect_1.1.2 stringi_1.7.6 highr_0.9 yaml_2.3.5
## [127] ggrepel_0.9.1 grid_4.2.0 sass_0.4.1 fastmatch_1.1-3 tools_4.2.0 future.apply_1.9.0 parallel_4.2.0 rstudioapi_0.13 foreach_1.5.2 lsa_0.73.2 gridExtra_2.3 prodlim_2019.11.13 farver_2.1.0 Rtsne_0.16 digest_0.6.29 BiocManager_1.30.17 shiny_1.7.1 lava_1.6.10 qlcMatrix_0.9.7 Rcpp_1.0.8.3 car_3.0-12 broom_0.8.0 later_1.3.0 harmony_0.1.0 RcppAnnoy_0.0.19 httr_1.4.2 colorspace_2.0-3 rvest_1.0.2 fs_1.5.2 XML_3.99-0.9 tensor_1.5 reticulate_1.24 splines_4.2.0 uwot_0.1.11 RcppRoll_0.3.0 spatstat.utils_2.3-0 mapproj_1.2.8 plotly_4.10.0 xtable_1.8-4 jsonlite_1.8.0 timeDate_3043.102 ipred_0.9-12
## [169] R6_2.5.1 pillar_1.7.0 htmltools_0.5.2 mime_0.12 glue_1.6.2 fastmap_1.1.0 BiocParallel_1.29.21 class_7.3-20 codetools_0.2-18 maps_3.4.0 utf8_1.2.2 lattice_0.20-45 bslib_0.3.1 spatstat.sparse_2.1-1 curl_4.3.2 leiden_0.3.9 zip_2.2.0 limma_3.51.8 survival_3.3-1 rmarkdown_2.14 docopt_0.7.1 munsell_0.5.0 GenomeInfoDbData_1.2.8 iterators_1.0.14 haven_2.5.0 reshape2_1.4.4 gtable_0.3.0 spatstat.core_2.4-2